package org.example2;

import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.jar.JarFile;

public class NestedJarLoader  {

    public static void main(String[] args) {
        try {

            // 假设nestedJar.jar包含了另一个名为nested-content.jar的嵌套jar

            String jarPath = System.getProperty("user.dir") + "/jarFileRear/jarFileDir/nestedJar.jar";

            File nestedJar = new File(jarPath);
            JarFile jarFile = new JarFile(nestedJar);
            String nestedJarEntryName = "org/example/simpleJarExample.jar";

            // 从嵌套的jar文件中提取出内部jar的条目
            java.util.jar.JarEntry jarEntry = jarFile.getJarEntry(nestedJarEntryName);
            if (jarEntry != null) {

                System.out.println(jarEntry);
                System.out.println(nestedJar.getAbsolutePath());
                // 打开嵌套的jar文件条目
                java.io.InputStream inputStream = jarFile.getInputStream(jarEntry);
                // 使用URLClassLoader加载内部jar
                URLClassLoader classLoader = new URLClassLoader(new URL[]{new URL("file", null, nestedJar.getAbsolutePath())});


                // 加载class，这里需要替换为实际要加载的class全名
                Class<?> nestedClass = classLoader.loadClass("com.example.HelloWorld");

                System.out.println(nestedClass);

                // 使用加载的class...
                // ...
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}